<?php

declare(strict_types=1);

namespace app\utils\image;

use Imagick;
use ImagickKernel;
use thiagoalessio\TesseractOCR\TesseractOCR;
use thiagoalessio\TesseractOCR\TesseractOcrException;

class Ocr
{
    /**
     * OCR识别
     *
     * @param string $image
     *
     * @return string
     * @throws TesseractOcrException
     */
    public static function handle(string $image): string
    {
        /*$imagick = new Imagick($image);

        // 转灰度
        $imagick->setImageColorspace(Imagick::COLORSPACE_GRAY);

        // 增强对比度
        $imagick->contrastImage(true);

        // 模糊减少干扰线
        $imagick->blurImage(1, 0.5);

        // 二值化
        $imagick->thresholdImage(0.6 * Imagick::getQuantum());
        // $imagick->thresholdImage(0.1 * 0.9);
        // 创建内核
        $kernel = ImagickKernel::fromBuiltin(Imagick::KERNEL_OCTAGON, "1");

        // 腐蚀 + 膨胀 去噪点
        $imagick->morphology(Imagick::MORPHOLOGY_ERODE, 1, $kernel);
        $imagick->morphology(Imagick::MORPHOLOGY_DILATE, 1, $kernel);

        // 保存处理后的图片
        $path = public_path('test.png');
        $imagick->writeImage($path);

        $ocr = new TesseractOCR($path);*/

        $ocr = new TesseractOCR($image);

        return $ocr->run();
    }
}